处理用户输入

您可以设置应用程序中的哪些元素与用户输入交互以及如何交互。在 Kanzi 中,要处理用户输入,您可以:

对于不必手动创建操纵器的 Kanzi 节点,因为它们默认会处理输入:

触发器和动作可用于创建基于用户输入的交互。请参阅 使用触发器

使用输入操纵器

Kanzi提供低级别和高级别的输入访问:

Kanzi 提供输入操纵器,为 Kanzi 工程中的节点启用手势识别。您可以通过 API 分配操纵器。

Kanzi 提供这些输入操纵器:

InputManipulator 是操纵器基本类,诸如 ClickManipulator::createPanManipulator::create 等函数创建负责相应手势识别的输入操纵器。

当您创建输入操纵器时,要组织手势,通过 Node::addInputManipulator 将其连接到节点。这也会连接节点的所有子节点。

连接的操纵器可产生消息,以响应用户动作。各操纵器通过消息报告手势识别期间的不同事件,例如平移操纵器的 PanManipulator::StartedMessagePanManipulator::MovedMessagePanManipulator::FinishedMessage 等等。

定义哪个节点接收用户输入

创建用户界面时,特别注意您的应用程序如何处理用户输入,因为一次仅一个节点可以接收用户输入。例如,定义点击是由前面的节点还是后面的节点处理。

Kanzi 采用命中测试来确定接收输入的节点。实际上,命中测试基于输入事件的屏幕坐标从摄像机向 3D 场景投射射线。

默认情况下,按钮 (Button)列表框项容器 (List Box Item Container)滚动视图 (Scroll View)滑块 (Slider) 节点启用命中测试。要为任何类型的节点启用命中测试,向该节点添加可测试命中 (Hit Testable) 属性并启用。

边框相交并且已启用 可测试命中 (Hit Testable) 属性的 摄像机 (Camera) 节点的第一个节点接收输入,执行事件并生成设置动作,如发送点击消息。

例如,如果您放置两个方框 (Box) 节点,使BoxFront 节点位于BoxRear 节点之前并完全挡住它:

设置输入区的大小

当您要更改节点接收输入的输入区,使用可测试命中容器 (Hit Testable Container) 属性。在 Kanzi 中,所有节点的命中测试默认基于各节点的布局尺寸。使用可测试命中容器 (Hit Testable Container) 属性在输入区中包括具有该属性的节点布局尺寸、以及该节点任何子节点的布局尺寸,而非该节点的包围盒。

默认情况下,按钮 (Button)列表框项容器 (List Box Item Container)滚动视图 (Scroll View)3D 滑块 (Slider 3D) 节点启用可测试命中容器 (Hit Testable Container) 属性。要设置任何其他类型的节点输入区的大小,添加并启用可测试命中容器 (Hit Testable Container)可测试命中 (Hit Testable) 属性。

例如,包含方框 (Box) 节点的 3D 堆栈布局 (Stack Layout 3D) 节点接收点击输入:

另请参阅

处理用户输入

使用点击操纵器

使用长按操纵器

使用多击操纵器

使用拖放操纵器

使用平移操纵器

使用捏合操纵器

使用按钮 (Button) 节点

使用切换按钮 (Toggle Button) 节点

列表框 (List Box) 节点

使用列表框项容器 (List Box Item Container) 预设件

使用滚动视图 (Scroll View) 节点

使用 滑块 (Slider) 节点

使用触发器